package com.xiye.system.service.user.impl;

import com.xiye.common.entity.Page;
import com.xiye.common.entity.PageData;
import com.xiye.common.entity.User;
import com.xiye.system.dao.DaoSupport;
import com.xiye.system.service.user.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 西野
 * @version V1.0
 * @title UserService.java
 * @package com.xiye.system.service.user.impl
 * @description 系统用户
 * @date 2018-07-11
 */
@Transactional
@Service("userService")
@SuppressWarnings("unchecked")
public class UserServiceImpl implements UserService {

    @Autowired
    private DaoSupport dao;

    /**
     * @Author 西野
     * @Date 2018-06-22 10:06:06
     * @Description 登录判断
     * @Param [pd]
     * @Return com.xiye.common.entity.PageData
     */
    public PageData getUserByNameAndPwd(PageData pd)  {
        return (PageData) dao.findForObject("UserMapper.getUserInfo", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 10:06:06
     * @Description 用户列表
     * @Param [page]
     * @Return java.util.List<com.xiye.common.entity.PageData>
     */
    public List<PageData> listUsers(Page page)  {
        return (List<PageData>) dao.findForList("UserMapper.userlistPage", page);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 10:06:06
     * @Description 用户列表
     * @Param [page]
     * @Return java.util.List<com.xiye.common.entity.PageData>
     */
    public List<PageData> getMenuList(PageData pd)  {
        return (List<PageData>) dao.findForList("UserMapper.getMenuList", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 10:06:06
     * @Description 通过用户ID获取用户信息和角色信息
     * @Param [USER_ID]
     * @Return User
     */
    public User getUserAndRoleById(String USER_ID)  {
        return (User) dao.findForObject("UserMapper.getUserAndRoleById", USER_ID);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 12:06:06
     * @Description 通过USERNAEME获取数据
     * @Param [pd]
     * @Return com.xiye.common.entity.PageData
     */
    public PageData findByUsername(PageData pd)  {
        return (PageData) dao.findForObject("UserMapper.findByUsername", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-07-06 09:08:58
     * @Description 列出某角色下的所有用户
     * @Param [pd]
     * @Return java.util.List<com.xiye.common.entity.PageData>
     */
    public List<PageData> listAllUserByRoldId(PageData pd)  {
        return (List<PageData>) dao.findForList("UserMapper.listAllUserByRoldId", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-07-20 13:06:39
     * @Description 新增用户
     * @Param [pd]
     * @Return void
     */
    public void addUser(PageData pd)  {
        dao.save("UserMapper.addUser", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-07-20 10:58:34
     * @Description 删除用户
     * @Param [pd]
     * @Return void
     */

    public void deleteUser(PageData pd)  {
        dao.delete("UserMapper.deleteUser", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-07-20 13:45:55
     * @Description 修改用户
     * @Param [pd]
     * @Return void
     */  
    public void editUser(PageData pd)  {
        dao.update("UserMapper.editUser", pd);
    }

    /* 
     * @Author 西野
     * @Date 2018-07-20 14:52:33
     * @Description 批量删除用户
     * @Param [USER_IDS]
     * @Return void
     */  
    public void deleteAllUser(String[] USER_IDS)  {
        dao.delete("UserMapper.deleteAllUser", USER_IDS);
    }

    /* 
     * @Author 西野
     * @Date 2018-07-20 15:20:46
     * @Description 获取所有用户
     * @Param [pd]
     * @Return java.util.List<com.xiye.common.entity.PageData>
     */  
    public List<PageData> listAllUser(PageData pd)  {
        return (List<PageData>) dao.findForList("UserMapper.listAllUser", pd);
    }

}
